; Ben Bitdiddle has invented a test to determine whether the 
; interpreter he is faced with is using applicative-order evalutation or normal-order
; evaluation. He defines the following two  procedures:
;

(define (p) (p))

(define (test x y)
  (if (= x 0)
    0
    y))

; Then he evaluates the expression

(test 0 (p))

; What behavior will Ben observe with an interpreter that uses applicative-order
; evaluation ?
;
; What behavior will he observe with an interpreter that use normal-order evaluation?
;
; Explain your aswer. 
;
;
; Com a "applicative-order evaluation" o interpretador tentará substituir o nome da variável pelo o seu valor logo que avaliar a expressão
; nesse caso irá causar uma recursão infinita ao tentar definir a variável "p", que é uma função que retorna o valor de "p".
;
; Já com a "normal-order evaluation" o interpretador irá tentar fazer a substituição da variável pelo seu valor somente quando for necessário
; o seu valor, nesse caso, não seria necessário o valor de "p" e portanto seria evitada a recursão infinita. Não é necessário o valor de "p",
; pois a "if" já retorna o o valor "0" não necessitando avaliar a expressão "y".
;
;
; 
